//
//  JumpViewController.m
//  HappyBug
//
//  Created by liulei on 2018/12/10.
//  Copyright © 2018年 www.hc.com.cn. All rights reserved.
//

#import "UITableViewDelegateStudy.h"

@interface UITableViewDelegateStudy ()
@end

@implementation UITableViewDelegateStudy{
    
    UITableView *tableview;
    NSMutableArray *tableArrays;
}

- (instancetype)init{
    
    if(self){
        self =[super init];
        [self viewDidLoad];
    }
    
    return  self;

}
- (void)scrollViewDidScroll:(UITableView *)tableview {
    CGRect statusRect = [[UIApplication sharedApplication] statusBarFrame];
    CGFloat sectionHeaderHeight = 60;
    CGFloat offsetY = tableview.contentOffset.y;
    NSLog(@"offsetY:%f:",offsetY);
    NSLog(@"statusRect:%f:",statusRect.size.height);

 
    
}
-(void)viewDidLoad{
    [self.view setBackgroundColor:[UIColor whiteColor]];
    tableview=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height) style:UITableViewStylePlain];
    [self.view addSubview:tableview];
    
    tableArrays =[[NSMutableArray alloc]init];
    
    for(int i =0;i<10;i++){
        NSString *String = [NSString stringWithFormat:@"%d",i];
        [tableArrays addObject:[NSString stringWithFormat:@"test:%@",String]];
    }
    
    //headView
    UILabel *headView =[[UILabel alloc]initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width,100)];
    [headView setText:@"HEADVIEW"];
    headView.textAlignment=NSTextAlignmentCenter;
    [headView setTextColor:[UIColor whiteColor]];
    [headView setBackgroundColor:[UIColor redColor]];
    
    tableview.bounces = YES;
    tableview.tableHeaderView =headView;
    tableview.dataSource=self;
    tableview.delegate=self;
}

/*****TableView基本必须实现的两个方法*****/
//返回每一行的cell
- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:( NSIndexPath *)indexPath {
    
    NSString *ID =@"tablecell";
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
    if(!cell){
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];;
    }
    cell.textLabel.text=tableArrays[indexPath.row];
    return cell;
}
//返回每个分区的行数
- (NSInteger)tableView:(nonnull UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [tableArrays count];
}
/*******************************************************************************************************/

//返回分区数(默认为1)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    
    return 2;
    
}
/****************************头部，底部,cell代理方法****************************************************/

//返回每个分区头部的标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return @"组";
}
//返回每个分区尾部的标题
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
    return nil;
}
//设置行高的方法
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
    return 80;
}
//设置头视图的方法
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 40;

}
//尾视图高度的方法
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return 0;

}
/****************************cell，头视图，尾视图将要显示时调用的方法********************************/

//cell将要显示时调用的方法
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
}
//头视图将要显示时调用的方法
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{
}
//尾视图将要显示时调用的方法
- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section{
}
/****************************cell，头视图，尾视图已经显示时调用的方法********************************/

//cell已经显示时调用的方法
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath{
    
}
//头视图已经显示时调用的方法

- (void)tableView:(UITableView *)tableView didEndDisplayingHeaderView:(UIView *)view forSection:(NSInteger)section{
}
//尾视图已经显示时调用的方法

- (void)tableView:(UITableView *)tableView didEndDisplayingFooterView:(UIView *)view forSection:(NSInteger)section{
}

/****************************编辑（删除增加）操作某一行Cell代理方法******************************************/

//设置某行是否可编辑
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
    return true;
}
//tableView接受编辑时调用的方法(系统只提供删除tablecell功能样式)--cell被操作
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
    //被编辑的对象行列
    NSString *str =[NSString stringWithFormat:@"行:%d-rou:%d",indexPath.section,indexPath.row];
    NSLog(@"indexPath:%@",str);
    
    if (UITableViewCellEditingStyleDelete == editingStyle)
    {
        [tableArrays removeObjectAtIndex:indexPath.row];
        //tableview cell样式移除cell
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationBottom];
    }
    
}

//自定义删除按钮的标题
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    return @"del";
    
}

/****自定义删除TableviewCell删除功能---IOS11可用****/
//- ( UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
//    //删除
//    UIContextualAction *deleteRowAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"delete121" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
//      //  [tableArrays removeObjectAtIndex:indexPath.row];
//        completionHandler (YES);
//        [tableView reloadData];
//    }];
//    deleteRowAction.image = [UIImage imageNamed:@"删除"];
//    deleteRowAction.backgroundColor = [UIColor redColor];
//
//    UISwipeActionsConfiguration *config = [UISwipeActionsConfiguration configurationWithActions:@[deleteRowAction]];
//    return config;
//}



//定义编辑时候的样式

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    //UITableViewCellEditingStyleInsert
    return UITableViewCellEditingStyleDelete;
}
//设置某行是否可以被移动
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
    return true;
}
//tableView的cell被移动时调用的方法
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
    NSLog(@"moveRowAtIndexPath");

}

/****************************自定义头部和尾部view*****************************/

//设置自定义头视图和尾视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
  
    return nil;
    
}
//设置头自定义尾视图
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    
    return nil;
}

/****************************设置cell是否可以高亮***************************************/

//设置cell是否可以高亮
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{
    
    if(indexPath.row==2){
        return true;
    }else{
        return  false;
    }
    
}
//cell高亮和取消高亮时分别调用的函FMDB数
- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath*)indexPath{
    
}
//cell高亮和取消高亮时分别调用的函数
- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath*)indexPath{
    
}


@end
